Editor de vdeo acessvel
Autor: Abel Passos
Objetivo:
Permitir a edio de vdeo por pessoas com deficincia visual
Verso 2.6
Data da ltima atualizao: 02/09/2025

Janela principal

A janela principal do programa  composta pelos seguintes objetos:
*  Menu: as opes sero descritas a seguir;
* campo media_ctrl: local onde ser feita a edio;
* campo com o tempo de reproduo do vdeo: apenas para consulta;
* opo Definir dimenses do vdeo: ao marcar esta opo, sero abertos dois campos. O primeiro  a largura e o segundo a altura do vdeo. Por padro, o programa mostra as dimenses atuais. Modifique os valores conforme sua necessidade, lembrando que, se alterar a proporo entre largura e altura, o vdeo pode ficar com a imagem extendida ou achatada. Por tanto, use esta opo com cuidado.

Funes do menu Arquivo

1. A opo "Abrir arquivo de vdeo", permite que voc selecione o vdeo que deseja trabalhar.
2. Consulte a seo comandos para saber como editar o vdeo carregado.
3. Se clicar em "Abrir projeto", o programa vai procurar um arquivo VEP previamente gravado e vai carregar o vdeo e todas as informaes da edio realizada nele. Veja o item 5 abaixo.
4. Ao clicar na opo "Exportar vdeo", o programa pedir ao usurio o nome do arquivo de sada para gravar o vdeo com os cortes realizados e as novas dimenses do vdeo (caso seja selecionada esta opo).
4.1. Ao exportar, voc poder escolher entre mp4, mov, mkv ou avi. Coloque uma das extenses anteriores no nome do arquivo de sada para que o vdeo gravado tenha este formato.
4.2. se clicar em "Exportar" e no for feita nenhuma alterao no vdeo, o programa perguntar se deseja salvar o vdeo em outro formato. As dimenses do vdeo sero preservadas nesta converso.
5. A opo "Salvar projeto" permite gravar em um arquivo do tipo VEP (Projeto de edio de vdeo) o nome do arquivo original e todos os pontos de cortes e marcaes. Isto  til caso queira alterar a edio do vdeo, sem a necessidade de refazer todo trabalho.
6. A opo "Fechar vdeo" descarrega o vdeo atual em edio e retorna o programa  sua condio inicial.
7. Sair: fecha o programa.

Funes do menu Editar:

1. Remover cortes: permite que voc limpe algum corte feito durante a edio. Ser aberta uma lista dos pontos de corte j definidos na edio atual. Selecione o que deseja remover e pressione OK. Aquele trecho do vdeo aparecer novamente na reproduo.
2. Ao clicar na opo "Remover marcadores", o programa perguntar se deseja remover todos os marcadores. Se pressionar "sim", todos os marcadores que foram criados com a letra "M" sero apagados.

Funes do menu Ferramentas

1. Converter vdeo para mp4, mov, mkv ou avi: esta opo permite ao usurio selecionar um vdeo e grav-lo em outro formato. Para tanto, basta selecionar a extenso do novo formato ao definir o nome do arquivo de sada.
2. concatenar arquivos de vdeos: ao selecionar esta opo, ser aberta uma janela para que voc selecione os vdeos que deseja concatenar. 
2.1. Pressione o boto "Adicionar" e selecione o primeiro vdeo. Pressione o boto "Adicionar novamente" e selecione o segundo vdeo. Repita esta operao at que todos os vdeos a concatenar estejam listados. 
2.2. Pressione OK para iniciar a concatenao.
2.3. O programa pedir o nome do arquivo de sada para salvar os vdeos concatenados. Esta opo no utiliza o vdeo em edio no momento. Caso queira utilizar o vdeo em edio, voc dever export-lo para gerar uma verso final e, posteriormente, voltar a esta opo e selecionar o vdeo exportado. a concatenao segue a ordem de vdeos selecionados.
2.4. Esta opo exige que voc defina as dimenses do vdeo de sada para evitar problemas se os vdeos a concatenar tiverem dimenses diferentes.
2.5. O vdeo final no  carregado automaticamente no programa. Voc precisar selecion-lo a travs da opo "Abrir vdeo", no menu Arquivo,  para fazer edies nele.
Observao: foi identificado um pequeno problema nesta funo que ser corrigida posteriormente. Quando tentei concatenar tipos de arquivos diferentes, como arquivos avi e mov, o programa no conseguiu concatenar corretamente. Mas quando se trata de vdeos de mesmo tipo, funciona perfeitamente.
3. Concatenar projetos: ao clicar nesta opo, voc dever escolher projetos salvos para concatenao
3.1. Pressione o boto "Adicionar" e selecione o primeiro projeto. Pressione o boto "Adicionar novamente" e selecione o segundo projeto. Repita esta operao at que todos os projetos a concatenar estejam listados. 
3.2. Pressione OK para iniciar a concatenao.
3.3. O programa pedir o nome do arquivo de sada para salvar o vdeo que ser resultado de todo processamento. A concatenao segue a ordem de projetos selecionados.
3.4. O programa processar os cortes de cada vdeo de cada projeto e depois juntar todas as partes em um nico arquivo.
3.5. Esta opo exige que voc defina as dimenses do vdeo de sada para evitar problemas se os vdeos dos projetos tiverem dimenses diferentes.
3.6. O vdeo final no  carregado automaticamente no programa. Voc precisar selecion-lo a travs da opo "Abrir vdeo", no menu Arquivo,  para fazer edies nele.
4. Ajustar volume de arquivo de udio: esta opo permite ao usurio selecionar um arquivo de udio, ajustar o seu volume e gravar um novo arquivo com o volume alterado. Isto  til para incluir trilha sonora nos vdeos. As funes da janela desta opo esta na seo de comandos.
5. Ajustar volume de udio de arquivo de vdeo: Semelhante ao anterior, porm com arquivos de vdeo. Permite que o usurio abra um arquivo de vdeo, ajuste o volume do udio e grave um novo arquivo de vdeo com o o volume ajustado. Esta funo no se aplica ao vdeo em edio no momento, caso exista algum.
6. Extrair faixa de udio de arquivo de vdeo: Permite que o usurio selecione um arquivo de vdeo e salve o seu udio em arquivo mp3 ou wav.
7. Inserir trilha sonora em vdeo: Esta opo pedir ao usurio para selecionar o arquivo de origem, o arquivo de udio da trilha sonora e o nome do arquivo de sada. Feito isto, o programa incluir a faixa de udio selecionada no vdeo escolhido. Esta opo no afeta o vdeo que estiver em edio no momento. 
8. Criar Vdeo com Imagem Esttica: esta opo abre uma janela onde o usurio poder selecionar uma foto qualquer, uma faixa de udio e as dimenses (largura e altura) para criar um vdeo onde a foto fique esttica enquanto o udio  reproduzido. Por padro, esta funo gera um arquivo do tipo MP4.

Funes do menu ajuda:

1. Principais comandos: abre uma janela com a lista de comandos de edio de vdeo e de ajuste de volume em arquivos de udio.
2. Sobre: informaes de autoria, verso do programa, etc.

Janela de processamento de vdeo

Sempre que o usurio escolher uma opo que necessite salvar um novo vdeo, o programa exibir uma janela de progresso com algumas informaes importantes.
Nesta janela vai existir um campo informando o processamento em curso, uma barra de progresso, um campo mostrando as informaes do ffmpeg ao realizar o processamento e um boto Fechar.
Observao: alguns formatos de vdeo no permitem que o ffmpeg identifique o tempo do vdeo para atualizar a barra de progresso. Por este motivo, o programa emite beeps a cada 5 segundos para informar ao usurio que algo est em processamento. Ao final do processamento de cada etapa da converso, o programa emitir 3 beeps.
Quando todo processamento for concludo, o usurio receber uma mensagem informando o seu trmino.

Comandos de edio:

Espao: toca e pausa a reproduo.
M: marca uma posio qualquer no vdeo. Se j estiver na posio e pressionar M, o marcador  apagado. Quando o marcador  criado, o programa emite um som agudo. Se for desmarcado, emite um som grave.
Alt+seta esquerda: vai para o  marcador anterior  posio atual.
Alt+seta direita: vai para o prximo marcador.
Shift+seta esquerda: desloca o marcador atual em um quadro para trs. Este comando no funcionar se a posio de reproduo do vdeo no estiver em um marcador.
Shift+seta direita: Desloca o marcador atual em um quadro para frente. Este comando no funcionar se a posio de reproduo do vdeo no estiver em um marcador.
Enter: Caso j exista um ponto marcado, reproduz ou pausa a reproduo sempre retornando ao marcador anterior mais prximo
Shift+Enter: estando em um marcador, reproduz 2 segundos antes do marcador
Home: vai para o incio do vdeo.
End: vai para o fim do vdeo.
Shift+A: retrocede 1 quadro.
Shift+D: avana um quadro.
A: retrocede 10 quadros.
D: avana 10 quadros.
W: retrocede 1 segundo
S: avana 1 segundo
Q: retrocede 10 segundos
E: avana 10 segundos
I: seleciona a posio atual como incio do corte
O: seleciona a posio atual como final do corte. Neste momento  realizado o corte do trecho marcado ao pressionar a letra "I" at o trecho que foi marcado com a letra "O".
J: Apaga todo trecho da posio atual at o incio do vdeo.
K: Apaga o trecho da posio atual at o final do vdeo.
Ctrl+G: Estando no objeto media_ctrl, onde o vdeo  exibido, abre uma janela perguntando para qual tempo deseja deslocar no vdeo. Por padro  mostrado no campo de texto o tempo onde o vdeo est no momento. Se o usurio digitar um tempo onde houve algum corte, o cursor deslocar para o tempo seguinte mais prximo. 
Observao: os cortes realizados pelo usurio permanecem no vdeo enquanto a exportao no for realizada. Portanto, este comando sempre considera o tempo total do vdeo e no o tempo total com os cortes.
Ctrl+T: Exibe o tempo total do vdeo e o tempo com cortes.
Tecla aplicao: exibe as opes "Definir incio" (equivalente ao comando "J"; "Definir fim" (equivalente ao comando "K" e "Ir para" (equivalente ao comando Ctrl+G).

Comandos para simulao:

Os comandos a seguir servem para que o usurio teste a remoo de um trecho do vdeo, sem o faz-lo. Para tanto basta marcar o incio e fim da simulao e executar a simulao para ter certeza que o corte esta preciso.
Os comandos abaixo no afetam os marcadores, nem alteram o comportamento dos comandos de corte "I" e "O" mencionados anteriormente:
Shift+I: marca o incio de um trecho para simulao;
Shift+O: Marca o fim de um trecho para simulao;
Ctrl+S: Executa a simulao reproduzindo 2 segundos antes do marcador de incio da simulao e 2 segundos aps o marcador de fim da simulao;
Ctrl+R: Realiza corte do trecho marcado para simulao;
Ctrl+X: Remove os marcadores de simulao.

Comandos da funo de ajustar volume de arquivo de udio:

Caso o usurio queira ajustar o volume  de um arquivo de udio, na janela que se abre para ajustar o volume existem os seguintes comandos:
Barra de espao: Reproduz e pausa a reproduo;
Ctrl+setadireita: avana 10 segundos na trilha de udio;
Ctrl+seta esquerda: Retrocede 10 segundos na trilha de udio;
setas esquerda e direita: diminui e aumenta o udio em 1% respectivamente;
setas para cima e para baixo: aumenta e diminui o udio saltando alguns pontos percentuais.

Comandos da funo de ajustar volume de udio de arquivo de vdeo

Na janela que se abre nesta funo, o usurio pode usar os seguintes comandos:
Barra de espao: Reproduz ou pausa a reproduo do vdeo;
a: Retrocede 1 segundo;
d: Avana 1 segundo;
Observao: os comandos acima s funcionam se o foco estiver no campo onde o vdeo est carregado.
Seta esquerda: ajusta o controle deslizante para diminuir o volume;
seta direita: ajusta o controle deslizante aumentando o volume do udio do vdeo.

Dica para preciso nos cortes:

Mtodo 1 - Usando diretamente os comandos de corte:
1. Reproduza o vdeo pressionando barra de espao e pause a reproduo no ponto em que deseja marcar o corte;
2. Pressione a letra "M" para marcar esta posio;
3. reproduza com Enter para verificar se est no ponto exato de corte. No utilize barra de espao aqui. O Enter faz com que a posio do vdeo sempre retorne ao marcador anterior mais prximo. Se pressionar barra de espao, a reproduo ser contnua;
4. Pressione Shift+Enter para reproduzir 2 segundos antes do ponto marcado para verificar se o marcador est na posio correta;
5. Pressione Shift+seta esquerda para retroceder a posio do marcador em 1 quadro ou Shift+seta direita para avanar a posio do marcador em 1 quadro, caso necessrio. Estes comandos s funcionam se voc estver em alguma posio do vdeo onde existe um marcador; 
6. Pressione Enter e Shift+enter para testar se est na posio correta. Se no estiver, pressione vrias vezes os comandos do passo anterior at encontrar a posio exata, sempre pressionando Enter para reproduzir ou pausar a reproduo ou Shift+Enter para reproduzir 2 segundos antes do marcador;
7. Aps encontrar a posio desejada, voc poder usar os comandos de corte J ou K para definir o incio ou fim do filme, respectivamente, ou usar I ou O para marcar incio e fim de um corte.

Mtodo 2 - Usando simulao:
1. Defina a posio inicial de incio para simulao e pressione Shift+I;
2. Defina a posio final para simulao e pressione Shift+O;
3. Execute a simulao pressionando Ctrl+S;
4. Se o corte simulado estiver correto, pressione Ctrl+R para cortar o trecho;
5. Se o trecho de corte simulado no estiver correto, pressione Ctrl+X para remover os marcadores de simulao e defina outras posies de incio e fim de simulao. Realize os procedimentos citados no Mtodo 1 para ajustar a preciso, exceto o passo 7;
6. Observe que os comandos de deslocamento de marcadores no deslocam os marcadores de simulao. Os marcadores marcados com "M" so totalmente independentes dos marcadores marcados com Shift+I e Shift+O.

Observaes:
*A partir da verso 2.0, as funes acessadas nos botes da janela principal do programa devem ser executadas atravs do menu do programa, pois os botes foram removidos.
* As funes de ajustar volume de arquivo de udio e Inserir trilha sonora em vdeo no afetam o vdeo em edio. Elas servem apenas para arquivos externos.
* a exportao do vdeo consome muito processamento do computador e pode ser bem lenta dependendo do tamanho do vdeo, qualidade da imagem, memria e processador do seu computador. Portanto, ao mandar exportar ou concatenar, voc ter que aguardar alguns minutos para concluso do processamento.
* Quando um corte  feito, ao reproduzir o vdeo pressionando a barra de espao, o trecho cortado  pulado, ou seja, voc vai perceber como o vdeo ficar com o corte feito. No entanto, existe um certo atraso na reproduo quando  necessrio pular um trecho cortado. Ainda no me preocupei com este detalhe, porque ao exportar o vdeo, esta frao de segundo que  mostrada na reproduo da zona de corte no acontece. Portanto, este pequeno atraso na reproduo se deve ao fato de o Python no ter uma resposta to rpida como um programa em C#, por exemplo. No entanto, como no tenho domnio de programao em C#, fiz o programa em Python mesmo. Creio que ele atende s minhas necessidades desta forma.
Este comportamento tambm ser percebido na reproduo de simulao de cortes.
* Quando houver necessidade de concatenar vdeos que foram editados, prefira salvar o projeto de cada vdeo editado e depois use a opo de concatenar projetos. Ao editar, gerar o arquivo final e depois concatenar as partes editadas voc aumenta a quantidade de renderizaes, o que pode prejudicar a qualidade de udio e vdeo. Quando voc usa a opo de concatenar projetos, o programa j processa os cortes de cada vdeo e concatena tudo ao mesmo tempo, reduzindo a quantidade de renderizaes e, consequentemente, gerando um vdeo final com menos perda de qualidade.

Histrico de verses:

Verso 2.6:
* Incluso da funo de ajuste de volume de vdeo
* Incluso da funo de extrair udio dos vdeos.

Verso 2.5.1:
* Correo da concatenao  de projetos quando existem projetos com apenas um arquivo de vdeo

Verso 2.5:
* Incluso da funo de criar vdeo exibindo apenas uma imagem esttica com udio de fundo

Verso 2.4:
* Correo do nmero da verso que aparecia na barra de status.
* Criao da ferramenta de concatenao de projetos. Necessria para evitar que seja necessria uma renderizao dos cortes, seguida de concatenao de partes. Exemplo: nas edies dos vdeos da Prof Teresa Kurimoto, era necessrio editar o vdeo da pergunta e depois o vdeo da resposta. 

Verso 2.1.1:
* correo das mensagens de concluso de processamento quando ocorre o processamento de vrias partes do vdeo. Ao invs de a mensagem de concluso aparecer apenas no final do processo, ela est aparecendo a cada trecho do filme que foi renderizado.

Verso 2.1:
* Incluso da funo de converso direta de formatos sem cortes ou alterao nas dimenses do vdeo. Exemplo: converter de mp4 para mov sem alterar qualquer parmetro, deixando o ffmpeg decidir quais codecs utilizar na converso;
* correo na funo para renomear arquivos processados, porque, se um arquivo de destino j existisse, o comando os.rename dava erro. Foi substitudo por os.replace, para garantir que o arquivo seja sobrescrito, caso j exista.
* incluso de beep durante o processamento do ffmpeg
* Correo do fechamento da janela de ajuste de volume de arquivo de udio, porque, se a janela fosse fechada e algum udio estivesse tocando, o udio continuava a tocar, mesmo com a janela fechada.
* Incluso da opo de fechamento do vdeo no menu para descarregar o vdeo atualmente carregado
* A funo de concatenao agora verifica se existe algum vdeo carregado e pede ao usurio para fechar antes de continuar. Isto serve paraevitar erros pelo usurio, pois ser necessrio definir as dimenses dovdeo resultante da concatenao. Se j existir algum vdeo carregado, aps concatenar, os valores das dimenses podem no corresponder ao vdeo carregado.
* incluso de self.Close no mtodo processar quando algum parmetro est incorreto   necessrio voltar  janela inicial;
* modificao no comando ffmpeg no mtodo incluir trilha sonora para que o formato mov seja suportado, sem definio do bitrate de udio
* chamada do ffmpeg agora  local, sem a necessidade de inserir o comando no PATH do ambiente
* agora todas as variveis atributos da classe esto dentro de um mtodo para ser carregado quando for necessrio resetar as informaes do programa.
* correo na exibio do tempo de reproduo do vdeo, porque, antes de carregar algum vdeo, era exibida uma informao de tempo negativo
* a funo de rastreamento do vdeo (on_timer) agora no executa nada se no houver vdeo carregado
* correo do ajuste de dimenso do vdeo final ao concatenar vdeos. Apesar de o programa exigir que o usurio definisse as dimenses, elas no eram obedecidas.
* correes nos comandos Enter, Shift+Enter, Shift+seta esquerda e Shift+seta direita. Devido ao arredondamento doclculo do frame atual, estas funes perdiam a posio dos marcadores e no conseguiam localiz-los.
* reformulao do arquivo de instrues, agora dividido em sees, conforme as opes do menu e comandos.
* agora o ffmpeg  interrompido quando o usurio pressiona o boto "Fechar" na janela de processamento de vdeo.

Verso 2.0.1:
* correo  de reposicionamento do vdeo em execuo simulada
* Incluso de varivel para alterar as mensagens de verso do programa em todo cdigo;

Verso 2.0:
* Incluso de simulao de corte, introduzindo os comandos Shift+I e Shift+O para marcao temporria de incio e fim de corte; 
* Includo o comando Ctrl+S para simular o corte, reproduzindo 2 segundos antes e 2 segundos depois do corte;
* inserido o comando Ctrl+R para realizar o corte do trecho marcado pelo incio e fim simulados;
* Includo o comando Ctrl+X para remover as marcaes de simulao;
* Ao sair do programa, ousurio ser consultado se tem certeza que quer fechar;
* Adio de menu suspenso com as principais funes do programa;
* Alterao nas mensagens de marcao de incio e fim de corte. Agora a mensagem mostra a posio temporal
* Incluso de mensagens mostrando a posio temporal no vdeo ao marcar incio e fim do vdeo com os atalhos J e K.

Verso 1.4.5:
* remoo da opo de escolha de codec. Agora o programa define qual o melhor codec a usar conforme o tipo de arquivo escolhido pelo usurio.
* correo para que se possa abrir o vdeo apenas para redimensionar sem   fazer cortes.
* verifica se o arquivo do vdeo em edio  o mesmo arquivo de sada e exibe mensagem para o usurio informando o problema.
* verificao do bitrate do vdeo para renderizar com o mesmo bitrate do vdeo original quando o tipo de arquivo destino for o mesmo do arquivo de origem.
* incluso do comando Shift+enter para reproduzir 2 segundos antes do ponto marcado.
* incluso de beep quandose marcaou desmarca uma posio no vdeo

Verso 1.4.4:
* realizao de converso para mp4, avi, mkv ou mov
* seleo de codecs de vdeo e udio
* remoo da funo de criar marcador se a posio do vdeo no estiver em um marcador ao pressionar os comandos Shift+seta direita ou Shift+seta esquerda 
* correo do salto para o marcador anterior usando a tecla Enter. Se o vdeo j estiver na posio de um marcador, no desloca para o marcador anterior
* colocao da posio atual do vdeo na janela do comandoCtrl+G
* correo do salto com Ctrl+G quando o tempo informado pelo usurio cai dentro de um intervalo

Verso 1.4.0:
* acrscimo dos comandos Shift+seta esquerda e Shift+seta direita para deslocar quadro a quadro a posio de um marcador
* inserido o comando Enter para reproduzir ou pausar o vdeo, sempre retornando ao marcador anterior mais prximo;

Verso 1.3.2:
* correo para  exibio da imagem do vdeo durante a edio
* correo para exibio  do boto "Sair"
* realinhamento horizontal dos botes que estavam alinhados verticalmente

Verso 1.3.1:
* correo do deslocamento no vdeo quando o deslocamento caa dentro de uma rea cortada
* incluso do comando Ctrl+G para ir a um tempo especfico do vdeo
*incluso de menu de contexto para as opes de definir incio e fim do vdeo e ir para um tempo especfico.
* includo o boto "Sair" para fechar o programa.

Verso 1.2.1:
* correo das barras de progresso na janela de rederizao de vdeo
* coloca em foco a janela de processamento do vdeo quando o processamento inicia
* Substituio da mensagem na janela  de processamento informando o processo de concatenao
* Ordena os cortes quando a janela de remover cortes  aberta

Verso 1.1.1:
* Correo do cdigo para capturar FPS eliminando caracteres indesejveis usando regex
* correo da gravao da lista de arquivos para concatenao usando codificao utf-8 para evitar erro com caracteres acentuados.
* insero da extenso mp4 quando o nome do arquivo no tiver extenso
* Alterao do ttulo da janela para exportar os arquivos de vdeo para "Exportar vdeo como"
* correo da  funo ms_para_timestamp que estava iniciando uma varivel como float quando deveria ser inteiro.
* correo dos comandos Alt+seta esquerda e direita para que o salto ignore os trechos cortados

*
Verso 1.1:
* Includa a funo para procurar o ffmpeg e adicionar  varivel de ambiente PATH
* Includa funo para concatenar vdeos
* Inserido campo que informa o tempo de reproduo do vdeo
* Includa opo para remover pontos de corte j definidos.
